In this internet cloud, some users may connect to the internet through a device, such as a mobile device, in order to run applications remotely, this application being run on a distant host server.
By application, or computer application, is meant either an operating system application, such as a mobile devices operating system, or an application to be executed on such an operating system. In order to run the application, the operating system has of course to be launched and run.
In order to be able to run an application on a host server, one may use so-called virtualization techniques.
The principle of such techniques is to create a virtual running environment onto the host server to be able to run a specific application, which running environment is clearly separated from any other virtual environment created for running any other application.
Running an application can be regarded as running one process in a system handling inter-process communication (IPC). For security or safety reasons, one process must not manipulate the data of another process. Therefore, processes must be isolated from each other, which goal is achieved by the use of virtualization and virtual environments or virtual machines.
For example, each process is assigned the access to one specific memory space in the virtual memory, this virtual memory space being mapped to the physical memory. Each process having thus its own virtual memory space, a process cannot manipulate the memory space of another process.
In some circumstances, one may desire running multiple instances of an application on a host server. This can be the case, for example, when one wants to allow multiple users of mobile devices to remotely test an application before downloading this application into their device.
Or this can be also the case, for example, when one wants to allow the running of applications designed to run on a specific operating system, onto a host server using itself another operating system.
In the above two paragraphs, by application is meant an end-user application which is due to run on an operating system which itself is regarded as an application too. To allow running these end-user applications on the host server and its operating system, one must be able to run on the host server multiple instances of the operating system corresponding to these end-user applications.
One way to do so is to use full virtualization, with emulation of the application (or operating system). This means that every instance of the application runs on its own kernel onto the host server, within the fully virtualized environment.
Such a state of the art virtual running environment or virtual machine may be briefly illustrated as in FIG. 1.
In the client side 5, or user space 5, of a host server, a service manager 1 is launched when the application such as the mobile operating system is launched. This service manager 1 becomes a context manager 1, and comprises a service registration means r 2 with a service table 4, which registers the services 6, 7, 8.
More precisely, the services 6, 7, 8 register themselves, when needed, into the service table 4 of the service registration means 2 into the context manager 1.
To become the context manager 1, the service manager 1 notifies the so-called binder driver 9 into the kernel space 10 of the host server, by calling an appropriate routine 11. This binder driver 9 effectively handles IPC, so that the process corresponding to the application running into user space 5 can communicate with other processes corresponding to other applications.
However, there usually can be only one context manager 1 running at a time for a given application instance, which prohibits concurrent multiple running of same application instances.
Even if it is possible to run multiple instances of an application, such as an operating system, in full virtualization, this usually comes along with memory overhead and performance penalty.
There are possibilities of reducing the memory overhead and performance limitation problems, by entering a so-called light-weight virtualization, into which the same operating system kernel is shared. However, the service manager 1 is started during the early boot up process of the operating system application. This service manager 2 becomes, as such, a global service manager which handles service registration/unregistration/query from other processes, and talk to the binder driver 9 to become a binder context manager.
All service 6, 7, 8 are then identified by their respective names into the service table 4 of the service registration means 2 in the binder context manager 1. Registering a service with a duplicated name will fail.
It is therefore not possible to launch more than one instance of the operating system application onto the host server.
In fact, any process being the first one to talk to the binder driver 9 becomes the binder context manager 1.
This binder context manager 1 can then be queried by other processes, by the use of a special fixed identifier, usually 0, via the binder driver 9.
In some systems, such as some known mobile device operating systems, the service manager 1, started at early stage of system bootup, requests to become the binder context manager 1.
This service manager 1 can be considered as a special service offering service management, such as registration, unregistration or querying. Other services or applications processes communicate with the service manager 1 via the binder driver 9 to use its special service.
There can thus be only one single binder context manager 1, or one single global service manager 1 which became in fact the binder context manager 1, running on host.
The invention provides a solution to these problems, with a method and a system for running multiple instances of a computer application, such as an operating system, into a virtual environment on a host server.